--- %%NOBANNER%% -->
/*-------------------<-- Start of Description-->---------------------\
| Check a datetime variable; |
| Input variable must be a string; |
|---------------------<-- End of Description-->----------------------|
|--------------------------------------------------------------------|
|------------<-- Start of Files or Arguments Needed-->---------------|
| Arguments neede: |
| _datestr : input variable; Required; |
| _newdate : the output date variable name; Required; |
| _newtime : the output time variable name; Required; |
| sql : where is this function used, within a sql statement |
| or within a datastep; |
|---------------<-- End of Files Arguments Needed-->-----------------|
|--------------------------------------------------------------------|
|------------------<-- Start of Files Created-->---------------------|
| Usage: %parsedt(_datestr, _newdate, _newtime, sql); |
\-------------------<-- End of Files Created-->---------------------*/
%macro parsedt(_datestr, _newdate, _newtime, sql);
/*--------------------------------------------\
| Copy Right: Duo Zhou; |
| Created: 3-11-2002 9:32pm; |
| Purpose: Parse a datetime variable; |
\--------------------------------------------*/
%if (%quote(%upcase(&sql)) eq SQL) %then %do;
datepart(input(substr(&_datestr, 5,2)||substr(&_datestr,1,3)||substr(&_datestr,8,4)||"/"||
substr(&_datestr,13,8)||"."||substr(&_datestr,22,3)||" "||
substr(&_datestr,25,2),datetime40.)) as &_newdate,
timepart(input(substr(&_datestr, 5,2)||substr(&_datestr,1,3)||substr(&_datestr,8,4)||"/"||
substr(&_datestr,13,8)||"."||substr(&_datestr,22,3)||" "||
substr(&_datestr,25,2),datetime40.)) as &_newtime
%end;
%else %if (%quote(%upcase(&sql)) ne SQL) %then %do;
_y_ = input(substr(&_datestr, 5,2)||substr(&_datestr,1,3)||substr(&_datestr,8,4)||"/"||
substr(&_datestr,13,8)||"."||substr(&_datestr,22,3)||" "||
substr(&_datestr,25,2),datetime40.) ;
&_newdate = datepart(_y_) ;
&_newtime = timepart(_y_) ;
format &_newtime time. &_newdate date.;
drop _y_;
%end;
%mend parsedt;